//////////////////////////////////////////////////////////////////////////////////////////////////////
// 项目名   : Readme.html
// 文件名   : Optional.h
// 作者     : Aiye
// 日期     : 2025/9/7 23:07
// 邮箱     : 2878548868@qq.com
// 摘要     : 介绍optional
//////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef README_HTML_OPTIONAL_H
#define README_HTML_OPTIONAL_H
#include <iostream>
#include <optional>

/**
 * @brief 包装器，可以包含一个值，也可以不包含任何值，避免使用-1、nullptr表示无值
 */
class Optional
{
public:
    Optional()
    {
        std::optional<int> nOpt1{}; // 空optional
        std::optional<int> nOpt2{42}; // 包含值的optioanal
        std::optional<int> nOpt3{std::nullopt}; // 显示设置为空

        if (nOpt1.has_value())
        {
            std::cout << "Value" << nOpt1.value() << std::endl;
        }

        auto nResult = nOpt1.value_or(100); // 如果opt为空，返回100

        nOpt2.reset(); //设置为空

        if (nOpt1 == std::nullopt)
        {
            std::cout << "nOpt1 is empty" << std::endl;
        }
    }
};
#endif //README_HTML_OPTIONAL_H